Technical Field
The present disclosure relates to network communications, and more specifically to inter-layer communication of events between Transmission Control Protocol (TCP) layer and higher layers when implemented in different concurrent execution entities.
Related Art
Internet protocol (IP) generally defines mechanisms for providing a unique address to each machine connected to the world-wide-web (WWW), and also for routing datagrams to destination systems having respective assigned IP addresses. As is well known, version 4 of IP (IPv4) has been prevalent, while version 6 (IPv6) has also been used lately. In general, IP provides for unreliable delivery of datagrams in that the delivery of each datagram is not ensured by operation of IP alone.
Transmission Control Protocol (TCP) is a protocol built on top of IP, for providing reliable delivery of a stream of bytes. Normally, the TCP of a source system includes up to a certain number of sequence of bytes in each datagram, and causes IP to send the datagram. The bytes may be ordered and numbered such that the TCP at the other end can request retransmission of any missing bytes not received due to packet loss during transmission on the WWW. TCP thus operates to provide reliable transport for a stream of bytes from a source system to a destination system.
TCP is said to be a higher layer compared to IP since IP may be viewed as providing a function, utility or service to TCP. There are higher layers on top of TCP as well. Examples of such layers include application layer, encryption layer, and socket layer, as is well known in the relevant arts. Such higher layers operate on top of and use the services provided by TCP for sending and receiving of data.
Typically, the interaction between TCP and higher layers is enabled by event messages, which may indicate specific states of interest attained in the communicating layer or request an action of the receiving layer. For example, a TCP layer may indicate completion of setting of a connection to a higher layer or availability of additional data received from a remote system. On the other hand, a socket layer may request data to be sent on an existing connection.
Concurrent execution entities are provided in enterprises for reasons such as scalability, higher throughput performance, availability, etc. Examples of such execution entities includes threads, processes, etc. These execution entities execute concurrently implying, each entity can continue to perform processing operations in parallel and independent of the other entities. Often such execution entities are executed on corresponding processors of a multi-processor system, though concurrent processing can be obtained on a single powerful processor as well.
There may be a need to execute TCP logic in one execution entity and higher layers in other execution entities, as related to a specific TCP stream of data. Aspects of the present disclosure address inter-layer communication of events when TCP layer is implemented in one concurrent execution entity and higher layers are implemented in another concurrent execution entity.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.